package com.summerbird.mallchat.common.common.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;

@Retention(RetentionPolicy.RUNTIME) // 运行时生效
@Target(ElementType.METHOD) // 作用在方法上
public @interface RedissonLock {

    /**
     * 默认使用方法全限定名称，只有在不同方法使用同一资源时，就自己指定
     * @return
     */
    String prefixKey() default "";

    /**
     * SpringEL表达式
     * @return
     */
    String key();

    /**
     * 等待锁时间，默认是-1，不等待直接失败
     * @return
     */
    int waitTime() default -1;

    /**
     * 等待锁的时间单位，默认是毫秒
     * @return
     */
    TimeUnit timeUnit() default TimeUnit.MILLISECONDS;
}
